package com.wtwd.campus.dao;

import com.wtwd.campus.entity.WxUser;
import io.swagger.models.auth.In;
import org.apache.ibatis.annotations.MapKey;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * @Author ldaoliang
 * @Date create in 13:58 2021/7/14
 * @Description
 */
@Mapper
public interface WxMapper {

    /**
     * 根据openId查询微信用户信息
     *
     * @param openId
     * @return
     */
    WxUser getWxUserByOpenId(String openId);

    /**
     * 添加微信用户
     *
     * @param wxUser
     * @return
     */
    int addWxUser(WxUser wxUser);

    /**
     * 更新微信用户最后登陆时间
     *
     * @param userId
     * @param lastLoginTime
     * @return
     */
    int updateWxUserLastLoginTime(@Param("userId") Integer userId, @Param("lastLoginTime") Long lastLoginTime);

    /**
     * 根据号码查询用户信息
     * @param phone
     * @return
     */
    WxUser getWxUserByPhone(@Param("phone") String phone, @Param("customerId") Integer customerId);

    /**
     * 根据ID查询微信用户信息
     * @param userId
     * @return
     */
    WxUser getWxUserById(Integer userId);

    /**
     * 绑定号码
     * @param userId
     * @param phone
     * @return
     */
    int bindingPhone(@Param("userId") Integer userId, @Param("phone") String phone);

    /**
     * 删除账号的openId
      * @param phone
     * @return
     */
    int delPhoneOpenId(@Param("phone") String phone);

    /**
     * 获取用户绑定的学生列表
     *
     * @param userId
     * @return
     */
    @MapKey("student_id")
    List<Map<String,Object>> getUserStudentList(@Param("userId") Integer userId);

    /**
     * 获取用户绑定的学生列表(新增imei和手机号码)
     *
     * @param userId
     * @return
     */
    @MapKey("student_id")
    List<Map<String,Object>> getUserStudentList2(@Param("userId") Integer userId);

    /**
     * 学生列表（发送指令前的查询）
     * @param userId
     * @return
     */
    @MapKey("student_id")
    List<Map<String,Object>> studentList(@Param("userId")Integer userId);

    /**
     * 清除绑定
     * @param userId
     * @return
     */
    int clearBind(@Param("userId") Integer userId);

    /**
     * 绑定设备的号码列表
     * @param studentId
     * @return
     */
    List<Map<String,Object>> bindStudentPhoneList(@Param("studentId")Integer studentId);

    /**
     * 设置管理员
     * @param userId
     * @param isMan
     * @return
     */
    Integer changeManager(@Param("userId") Integer userId,@Param("isMan") Integer isMan,@Param("stuId") Integer stuId,@Param("isAuthority") Integer isAuthority);

    /**
     * 根据id获取绑定记录
     * @param id
     * @return
     */
    Map<String,Object> getBindingById(Integer id);

    /**
     * 授权
     * @param id
     * @return
     */
    Integer giveAuthority(@Param("id") Integer id,@Param("status") Integer status);

    /**
     * 根据学生id和用户id查询一条绑定记录
     * @param stuId
     * @return
     */
    Map<String,Object> getBindingByStuIdAndUserId(@Param("stuId") Integer stuId,@Param("userId") Integer userId);

    /**
     * 根据学生id获取被授权的家长的openId
     * @param stuId
     * @return
     */
    List<Map<String,Object>> getOpenIdByStuId(Integer stuId);

    /**
     * 根据用户id修改学生家长绑定列表中的电话号码
     * @param userId
     * @param phone
     * @return
     */
    Integer modifyBindingPhoneByUserId(@Param("userId") Integer userId,@Param("phone") String phone);

    /**
     * 删除微信用户
     * @param userId
     * @return
     */
    int delWxUser(@Param("userId")Integer userId);

    /**
     * 更新openId
     * @param openId
     * @param userId
     * @return
     */
    int updateOpenId(@Param("openId")String openId,@Param("userId")Integer userId);

    List<String>  getOpenIdListByClassId(@Param("classId") Integer classId);

    List<String>  getOpenIdListByClassIdList(@Param("list") List<Integer> list);

    List<Integer>  getClassIdListBySchoolId(@Param("schoolId") Integer schoolId);

    String getClassesMessByUserId(@Param("userId") Integer userId);

    List<Map<String,Object>> getClassNameByClassIdList(@Param("list") List<Integer> list);

    String getTeacherNameByUserId(@Param("userId") Integer userId);

    /**
     * 根据openId获取微信用户Id
     * @param openId
     * @return
     */
    Integer getWxUserIdByOpenId(@Param("openId") String openId);

    /**
     * 获取学生列表
     * @param wxUserId
     * @return
     */
    List<Map<String,Object>> xmlyStudentList(Integer wxUserId);

    List<Map<String,Object>>  getOpenIdAndStuNameListByClassId(@Param("classId") Integer classId);

    int modifyPhoneByImei(@Param("imei") String imei,@Param("phone") String phone);

    Integer updateWxUserCustomerIdByWxUserId(@Param("wxUserId") Integer wxUserId, @Param("customerId") Integer customerId);
}
